Slack Botでの動作に必要なBot Eventについて参考用にまとめてみた
はじめに
Slack APIでbotを作成したい時に、
「思った通りに動かない!」
と頭を抱えるキッカケになりがちなのがEvent SubscriptionsでのSubscribe to Bot Eventsです。設定した後に「Save Changes」で更新しないと反映されないところもハマりどころです。手慣れた人でも割とやりがちかもしれません。
Slack API: Applications | Slack
Bot Eventは実際に追加してみないと解説が見難い感じもあります。備忘録含めて夫々書き出してみました。
Botイベント
所謂Slack Appとは動作が異なります。コマンドライン操作ではなく、あくまでもBotユーザとのリプライ用途と想定すると理解しやすいかもしれません。リンク先は実装時の参考用リファレンスとなります。
Event Name | Description | 簡易訳 |
---|---|---|
team_domain_change | The workspace domain has changed | ワークスペースのドメインが変更された時 |
email_domain_changed | The workspace email domain has changed | ワークスペースのEメールドメインが変更された時 |
subteam_created | A User Group has been added to the workspace | ワークスペースにユーザグループが追加された時 |
subteam_updated | An existing User Group has been updated or its members changed | 既存のユーザグループが更新あるいはメンバーが変更された時 |
subteam_members_changed | The membership of an existing User Group has changed | 既存のユーザグループのメンバーシップが変更された時 |
subteam_self_added | You have been added to a User Group | ユーザグループに追加された時 |
subteam_self_removed | You have been removed from a User Group | ユーザグループから外された時 |
message.channels | A message was posted to a channel | メッセージがチャンネルに投稿された時 |
message.im | A message was posted in a direct message channel | DMチャンネルにメッセージが投稿された時 |
message.mpim | A message was posted in a multiparty direct message channel | 複数のDMチャンネルにメッセージが投稿された時 |
link_shared | A message was posted containing one or more links relevant to your application | アプリケーションに関して一つ以上のリンクを含むメッセージが投稿された時 |
call_rejected | A call was rejected | 着信拒否された時 |
reaction_added | A member has added an emoji reaction to an item | メンバーによって絵文字リアクションが追加された時 |
reaction_removed | A member removed an emoji reaction | メンバーによって絵文字リアクションが撤去された時 |
emoji_changed | A custom emoji has been added or changed | カスタム絵文字が追加あるいは変更された時 |
team_rename | The workspace name has changed | ワークスペース名が変更された時 |
サンプルBotを作って実験したい場合
以下の記事を参考に、コスト不要で作成することができます。
あとがき
Boltフレームワークで色々試してみようと思ったものの、BotEventについてあまり把握できていなかったため先に何ができるのか確認をしてみました。
Botとの簡易なやりとりについては、message.imで動作確認しつつ、message.channelsにて他のユーザと共有を行う流れがベターでしょう。